/*
  数组的实例方法：
     map() 
      作用：映射，根据已有的数组得到一个新数组，两者数组元素是一一对应的
      返回：映射后的新数组
      语法：array.map((item, index, arr) => {
        return 新值  //? 把每次回调函数返回的新值，加到新数组中
      })
 */
// 1. 基本类型
// const beauty = ['西施', '貂蝉', '杨玉环', '王昭君']
// 每个元素，后面拼接上一个编号
// const result = beauty.map((item, index) => {
//   return `${item}-${index + 1}`
// })
// console.log(result)
// console.log(beauty)

// 四大美女的 腰围 ，统统 +10
// const waistlines = [55, 43, 70, 58]
// const result = waistlines.map(item => item + 10)
// console.log(result)
// console.log(waistlines)

// 2. 引用类型
const girls = [
  {
    name: '王昭君',
    height: 170
  }, {
    name: '貂蝉',
    height: 172
  }, {
    name: '西施',
    height: 162
  }, {
    name: '杨玉环',
    height: 169
  }
]
// 给每个对象增加 编号 （下标 + 1） 和 性别属性（female)
// const result = girls.map((item, index) => {
//   return {
//     ...item,
//     no: index + 1,
//     gender: 'female'
//   }
// })
// console.log(result)


Array.prototype._map = function (callback) {
  const result = []
  for (let i = 0; i < this.length; i++) {
    result.push(callback(this[i], i, this))
  }
  return result
}

const result = girls._map((item, index) => {
  return {
    ...item,
    no: index + 1,
    gender: 'female'
  }
})
console.log(result)










